home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / Fonts.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  11.0 KB  |  380 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Fonts.p
  3.  
  4.      Contains:    Font Manager Interfaces.
  5.  
  6.      Version:    Technology:    MacOS
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Fonts;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __FONTS__}
  28. {$SETC __FONTS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC FontsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40.  
  41.  
  42. {$PUSH}
  43. {$ALIGN MAC68K}
  44. {$LibExport+}
  45.  
  46.  
  47. CONST
  48.     systemFont                    = 0;
  49.     applFont                    = 1;
  50.  
  51.  
  52. {
  53.     The following font constants are deprecated.  
  54.     Please use GetFNum() to look up the font ID by name.
  55. }
  56.     kFontIDNewYork                = 2;
  57.     kFontIDGeneva                = 3;
  58.     kFontIDMonaco                = 4;
  59.     kFontIDVenice                = 5;
  60.     kFontIDLondon                = 6;
  61.     kFontIDAthens                = 7;
  62.     kFontIDSanFrancisco            = 8;
  63.     kFontIDToronto                = 9;
  64.     kFontIDCairo                = 11;
  65.     kFontIDLosAngeles            = 12;
  66.     kFontIDTimes                = 20;
  67.     kFontIDHelvetica            = 21;
  68.     kFontIDCourier                = 22;
  69.     kFontIDSymbol                = 23;
  70.     kFontIDMobile                = 24;
  71.  
  72. {$IFC OLDROUTINENAMES }
  73.     newYork                        = 2;
  74.     geneva                        = 3;
  75.     monaco                        = 4;
  76.     venice                        = 5;
  77.     london                        = 6;
  78.     athens                        = 7;
  79.     sanFran                        = 8;
  80.     toronto                        = 9;
  81.     cairo                        = 11;
  82.     losAngeles                    = 12;
  83.     times                        = 20;
  84.     helvetica                    = 21;
  85.     courier                        = 22;
  86.     symbol                        = 23;
  87.     mobile                        = 24;
  88.  
  89. {$ENDC}  {OLDROUTINENAMES}
  90.  
  91.     commandMark                    = 17;
  92.     checkMark                    = 18;
  93.     diamondMark                    = 19;
  94.     appleMark                    = 20;
  95.  
  96.     propFont                    = 36864;
  97.     prpFntH                        = 36865;
  98.     prpFntW                        = 36866;
  99.     prpFntHW                    = 36867;
  100.     fixedFont                    = 45056;
  101.     fxdFntH                        = 45057;
  102.     fxdFntW                        = 45058;
  103.     fxdFntHW                    = 45059;
  104.     fontWid                        = 44208;
  105.  
  106.  
  107. TYPE
  108.     FMInputPtr = ^FMInput;
  109.     FMInput = PACKED RECORD
  110.         family:                    INTEGER;
  111.         size:                    INTEGER;
  112.         face:                    Style;
  113.         needBits:                BOOLEAN;
  114.         device:                    INTEGER;
  115.         numer:                    Point;
  116.         denom:                    Point;
  117.     END;
  118.  
  119.     FMOutputPtr = ^FMOutput;
  120.     FMOutput = PACKED RECORD
  121.         errNum:                    INTEGER;
  122.         fontHandle:                Handle;                                    {  the previous "privateFontResult" was a mistake!  }
  123.         boldPixels:                UInt8;
  124.         italicPixels:            UInt8;
  125.         ulOffset:                UInt8;
  126.         ulShadow:                UInt8;
  127.         ulThick:                UInt8;
  128.         shadowPixels:            UInt8;
  129.         extra:                    SInt8;
  130.         ascent:                    UInt8;
  131.         descent:                UInt8;
  132.         widMax:                    UInt8;
  133.         leading:                SInt8;
  134.         curStyle:                SInt8;
  135.         numer:                    Point;
  136.         denom:                    Point;
  137.     END;
  138.  
  139.     FMOutPtr                            = ^FMOutput;
  140.     FontRecPtr = ^FontRec;
  141.     FontRec = RECORD
  142.         fontType:                INTEGER;                                { font type }
  143.         firstChar:                INTEGER;                                { ASCII code of first character }
  144.         lastChar:                INTEGER;                                { ASCII code of last character }
  145.         widMax:                    INTEGER;                                { maximum character width }
  146.         kernMax:                INTEGER;                                { negative of maximum character kern }
  147.         nDescent:                INTEGER;                                { negative of descent }
  148.         fRectWidth:                INTEGER;                                { width of font rectangle }
  149.         fRectHeight:            INTEGER;                                { height of font rectangle }
  150.         owTLoc:                    INTEGER;                                { offset to offset/width table }
  151.         ascent:                    INTEGER;                                { ascent }
  152.         descent:                INTEGER;                                { descent }
  153.         leading:                INTEGER;                                { leading }
  154.         rowWords:                INTEGER;                                { row width of bit image / 2  }
  155.     END;
  156.  
  157.     FontRecHdl                            = ^FontRecPtr;
  158.     FMetricRecPtr = ^FMetricRec;
  159.     FMetricRec = RECORD
  160.         ascent:                    Fixed;                                    { base line to top }
  161.         descent:                Fixed;                                    { base line to bottom }
  162.         leading:                Fixed;                                    { leading between lines }
  163.         widMax:                    Fixed;                                    { maximum character width }
  164.         wTabHandle:                Handle;                                    { handle to font width table }
  165.     END;
  166.  
  167. {
  168.    typedef struct FMetricRec FMetricRec, *FMetricRecPtr;
  169.    typedef FMetricRecPtr *FMetricRecHandle;
  170. }
  171.     FMetricRecHandle                    = ^FMetricRecPtr;
  172.     WidEntryPtr = ^WidEntry;
  173.     WidEntry = RECORD
  174.         widStyle:                INTEGER;                                { style entry applies to }
  175.     END;
  176.  
  177.     WidTablePtr = ^WidTable;
  178.     WidTable = RECORD
  179.         numWidths:                INTEGER;                                { number of entries - 1 }
  180.     END;
  181.  
  182.     AsscEntryPtr = ^AsscEntry;
  183.     AsscEntry = RECORD
  184.         fontSize:                INTEGER;
  185.         fontStyle:                INTEGER;
  186.         fontID:                    INTEGER;                                { font resource ID }
  187.     END;
  188.  
  189.     FontAssocPtr = ^FontAssoc;
  190.     FontAssoc = RECORD
  191.         numAssoc:                INTEGER;                                { number of entries - 1 }
  192.     END;
  193.  
  194.     StyleTablePtr = ^StyleTable;
  195.     StyleTable = RECORD
  196.         fontClass:                INTEGER;
  197.         offset:                    LONGINT;
  198.         reserved:                LONGINT;
  199.         indexes:                PACKED ARRAY [0..47] OF CHAR;
  200.     END;
  201.  
  202.     NameTablePtr = ^NameTable;
  203.     NameTable = RECORD
  204.         stringCount:            INTEGER;
  205.         baseFontName:            Str255;
  206.     END;
  207.  
  208.     KernPairPtr = ^KernPair;
  209.     KernPair = RECORD
  210.         kernFirst:                SInt8;                                    { 1st character of kerned pair }
  211.         kernSecond:                SInt8;                                    { 2nd character of kerned pair }
  212.         kernWidth:                INTEGER;                                { kerning in 1pt fixed format }
  213.     END;
  214.  
  215.     KernEntryPtr = ^KernEntry;
  216.     KernEntry = RECORD
  217.         kernStyle:                INTEGER;                                { style the entry applies to }
  218.         kernLength:                INTEGER;                                { length of this entry }
  219.     END;
  220.  
  221.     KernTablePtr = ^KernTable;
  222.     KernTable = RECORD
  223.         numKerns:                INTEGER;                                { number of kerning entries }
  224.     END;
  225.  
  226.     WidthTablePtr = ^WidthTable;
  227.     WidthTable = PACKED RECORD
  228.         tabData:                ARRAY [0..255] OF Fixed;                { character widths }
  229.         tabFont:                Handle;                                    { font record used to build table - the previous FontResult was a mistake! }
  230.         sExtra:                    LONGINT;                                { space extra used for table }
  231.         style:                    LONGINT;                                { extra due to style }
  232.         fID:                    INTEGER;                                { font family ID }
  233.         fSize:                    INTEGER;                                { font size request }
  234.         face:                    INTEGER;                                { style (face) request }
  235.         device:                    INTEGER;                                { device requested }
  236.         inNumer:                Point;                                    { scale factors requested }
  237.         inDenom:                Point;                                    { scale factors requested }
  238.         aFID:                    INTEGER;                                { actual font family ID for table }
  239.         fHand:                    Handle;                                    { family record used to build up table }
  240.         usedFam:                BOOLEAN;                                { used fixed point family widths }
  241.         aFace:                    UInt8;                                    { actual face produced }
  242.         vOutput:                INTEGER;                                { vertical scale output value }
  243.         hOutput:                INTEGER;                                { horizontal scale output value }
  244.         vFactor:                INTEGER;                                { vertical scale output value }
  245.         hFactor:                INTEGER;                                { horizontal scale output value }
  246.         aSize:                    INTEGER;                                { actual size of actual font used }
  247.         tabSize:                INTEGER;                                { total size of table }
  248.     END;
  249.  
  250.     WidthTableHdl                        = ^WidthTablePtr;
  251.  
  252.     FamRecPtr = ^FamRec;
  253.     FamRec = RECORD
  254.         ffFlags:                INTEGER;                                { flags for family }
  255.         ffFamID:                INTEGER;                                { family ID number }
  256.         ffFirstChar:            INTEGER;                                { ASCII code of 1st character }
  257.         ffLastChar:                INTEGER;                                { ASCII code of last character }
  258.         ffAscent:                INTEGER;                                { maximum ascent for 1pt font }
  259.         ffDescent:                INTEGER;                                { maximum descent for 1pt font }
  260.         ffLeading:                INTEGER;                                { maximum leading for 1pt font }
  261.         ffWidMax:                INTEGER;                                { maximum widMax for 1pt font }
  262.         ffWTabOff:                LONGINT;                                { offset to width table }
  263.         ffKernOff:                LONGINT;                                { offset to kerning table }
  264.         ffStylOff:                LONGINT;                                { offset to style mapping table }
  265.         ffProperty:                ARRAY [0..8] OF INTEGER;                { style property info }
  266.         ffIntl:                    ARRAY [0..1] OF INTEGER;                { for international use }
  267.         ffVersion:                INTEGER;                                { version number }
  268.     END;
  269.  
  270.     FontPointSize                        = SInt16;
  271.     FontFamilyID                        = SInt16;
  272. PROCEDURE InitFonts;
  273.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  274.     INLINE $A8FE;
  275.     {$ENDC}
  276. PROCEDURE GetFontName(familyID: INTEGER; VAR name: Str255);
  277.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  278.     INLINE $A8FF;
  279.     {$ENDC}
  280. PROCEDURE GetFNum(name: ConstStr255Param; VAR familyID: INTEGER);
  281.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  282.     INLINE $A900;
  283.     {$ENDC}
  284. FUNCTION RealFont(fontNum: INTEGER; size: INTEGER): BOOLEAN;
  285.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  286.     INLINE $A902;
  287.     {$ENDC}
  288. PROCEDURE SetFontLock(lockFlag: BOOLEAN);
  289.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  290.     INLINE $A903;
  291.     {$ENDC}
  292. FUNCTION FMSwapFont({CONST}VAR inRec: FMInput): FMOutPtr;
  293.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  294.     INLINE $A901;
  295.     {$ENDC}
  296. PROCEDURE SetFScaleDisable(fscaleDisable: BOOLEAN);
  297.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  298.     INLINE $A834;
  299.     {$ENDC}
  300. PROCEDURE FontMetrics(theMetrics: FMetricRecPtr);
  301.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  302.     INLINE $A835;
  303.     {$ENDC}
  304. PROCEDURE SetFractEnable(fractEnable: BOOLEAN);
  305.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  306.     INLINE $A814;
  307.     {$ENDC}
  308. FUNCTION GetDefFontSize: INTEGER;
  309.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  310.     INLINE $3EB8, $0BA8, $6604, $3EBC, $000C;
  311.     {$ENDC}
  312. FUNCTION IsOutline(numer: Point; denom: Point): BOOLEAN;
  313.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  314.     INLINE $7000, $A854;
  315.     {$ENDC}
  316. PROCEDURE SetOutlinePreferred(outlinePreferred: BOOLEAN);
  317.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  318.     INLINE $7001, $A854;
  319.     {$ENDC}
  320. FUNCTION GetOutlinePreferred: BOOLEAN;
  321.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  322.     INLINE $7009, $A854;
  323.     {$ENDC}
  324. FUNCTION OutlineMetrics(byteCount: INTEGER; textPtr: UNIV Ptr; numer: Point; denom: Point; VAR yMax: INTEGER; VAR yMin: INTEGER; awArray: FixedPtr; lsbArray: FixedPtr; boundsArray: RectPtr): OSErr;
  325.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  326.     INLINE $7008, $A854;
  327.     {$ENDC}
  328. PROCEDURE SetPreserveGlyph(preserveGlyph: BOOLEAN);
  329.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  330.     INLINE $700A, $A854;
  331.     {$ENDC}
  332. FUNCTION GetPreserveGlyph: BOOLEAN;
  333.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  334.     INLINE $700B, $A854;
  335.     {$ENDC}
  336. FUNCTION FlushFonts: OSErr;
  337.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  338.     INLINE $700C, $A854;
  339.     {$ENDC}
  340. FUNCTION GetSysFont: INTEGER;
  341.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  342.     INLINE $3EB8, $0BA6;
  343.     {$ENDC}
  344. FUNCTION GetAppFont: INTEGER;
  345.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  346.     INLINE $3EB8, $0984;
  347.     {$ENDC}
  348.  
  349. PROCEDURE AntiTextSetApplicationAware(aware: BOOLEAN);
  350.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  351.     INLINE $7024, $A854;
  352.     {$ENDC}
  353. FUNCTION AntiTextGetApplicationAware: BOOLEAN;
  354.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  355.     INLINE $7025, $A854;
  356.     {$ENDC}
  357. PROCEDURE AntiTextSetEnabled(enabled: BOOLEAN);
  358.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  359.     INLINE $7026, $A854;
  360.     {$ENDC}
  361. FUNCTION AntiTextGetEnabled: BOOLEAN;
  362.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  363.     INLINE $7027, $A854;
  364.     {$ENDC}
  365. FUNCTION AntiTextIsAntiAliased(numer: Point; denom: Point): BOOLEAN;
  366.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  367.     INLINE $7028, $A854;
  368.     {$ENDC}
  369.  
  370. {$ALIGN RESET}
  371. {$POP}
  372.  
  373. {$SETC UsingIncludes := FontsIncludes}
  374.  
  375. {$ENDC} {__FONTS__}
  376.  
  377. {$IFC NOT UsingIncludes}
  378.  END.
  379. {$ENDC}
  380.